/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Ejecucion;

import Ejecucion.Conection.*;
import Ejecucion.Correo.*;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
 *
 * @author pipo
 */
public class Empresa {
 
 int id;  
 String nombre;
 String user;
 String pass1;
 String url;
 String mail;
 String telefono;
 int giro;
 
 
 public int agregarEmpresa(Empresa e){
     int existe= empresaExiste(e.nombre,e.user);
     if(existe==0){//si la empresa no existe
         int existe2= adminExiste(e.user);
         if(existe2==0){//si no existe el usuario como administrador
             int existe3= userExiste(e.user);
            if(existe3==0){ //si no existe el usuario como usuario normal
              Conection c=new Conection();
              Connection con1;
              try {
                  con1 = c.getConnection();
                  Statement stm1 = con1.createStatement();
                  String sql="Insert into Empresa (idGiro_Empresa, nombre, usuario, password_2, url, correo, telefono,habilitado) values("+e.giro+",'"+e.nombre+"','"+e.user+"','"+e.pass1+"','"+e.url+"','"+e.mail+"','"+e.telefono+"',0);";
                  stm1.execute(sql);
                  con1.close();
                  return 0;
              } catch (SQLException ex) {
                  return 0;
              }
              }else{return 2;}
         }
         else{return 2;}
     }
     else {
         if(existe==1){return 1;}//empresa existe
         else {
         return 2;//usuario existe
        }
     }
 }
 public int empresaExiste(String nombre, String usuario){
     Conection c=new Conection();
        Connection con1;
        try {
            con1 = c.getConnection();
            Statement stm1 = con1.createStatement();
            ResultSet rs1;
            String sql="Select count(*) cont from empresa where nombre='"+nombre+"';";
            rs1 = stm1.executeQuery(sql);
            rs1.next();
            int cont=rs1.getInt(1);
            if(cont==0){
                Statement stm2 = con1.createStatement();
                ResultSet rs2;
                String sql2="Select count(*) cont from empresa where usuario='"+usuario+"';";
                rs2 = stm2.executeQuery(sql2);
                rs2.next();
                int cont2=rs2.getInt(1);
                if(cont2==0){return 0;} // el usuario no existe
                else {return 2;}        // el usuario ya existe
            }
            else {return 1;} // la empresa ya existe
            
        } catch (SQLException ex) {
            return 0; 
        }
     
 }
 
  public int adminExiste(String usuario){
        Conection c=new Conection();
        Connection con1;
        try {
            con1 = c.getConnection();
            Statement stm1 = con1.createStatement();
            ResultSet rs1;
            String sql="Select count(*) cont from administrador where usuario='"+usuario+"';";
            rs1 = stm1.executeQuery(sql);
            rs1.next();
            int cont=rs1.getInt(1);
            if(cont==0){return 0;} // el usuario no existe
                else {return 2;}   // el usuario ya existe  
        } catch (SQLException ex) {
            return 0; 
        }
     
 }
  
  public int userExiste(String usuario){
        Conection c=new Conection();
        Connection con1;
        try {
            con1 = c.getConnection();
            Statement stm1 = con1.createStatement();
            ResultSet rs1;
            String sql="Select count(*) cont from usuario where usuario='"+usuario+"';";
            rs1 = stm1.executeQuery(sql);
            rs1.next();
            int cont=rs1.getInt(1);
            if(cont==0){return 0;} // el usuario no existe
                else {return 2;}   // el usuario ya existe  
        } catch (SQLException ex) {
            return 0; 
        }
     
 }
 
 public int habilitarEmpresa(int id, int habilitar){
     Conection c=new Conection();
     Connection con1;
        try {
            con1 = c.getConnection();
            Statement stm1 = con1.createStatement();
            String sql="Update empresa SET habilitado="+habilitar+" where idEmpresa="+id+"";
            stm1.executeUpdate(sql);
            // la linea de abajo envia un correo al mail asociado a la empresa
            if(habilitar==1)enviarCorreo(id);
            con1.close();
            return 1;
        } catch (SQLException ex) {
            return 0;
        }
 }
 
 public void enviarCorreo(int id){
     Conection c=new Conection();
     Connection con1;
        try {
            con1 = c.getConnection();
            Statement stm1 = con1.createStatement();
            ResultSet rs1;
            String sql="Select correo from empresa where idEmpresa="+id+";";
            rs1 = stm1.executeQuery(sql);
            rs1.next();
            String mail=rs1.getString(1);
            System.out.println(rs1.getString(1));
            Correo co= new Correo();
         try {
             co.enviar(mail);
         } catch (Exception ex) {
             Logger.getLogger(Empresa.class.getName()).log(Level.SEVERE, null, ex);
         }
            con1.close();
            
        } catch (SQLException ex) {
            
        }
 }
 
 public int esEmpresa(String usuario, String pass){
        Conection c=new Conection();
        Connection con1;
        try {
            con1 = c.getConnection();
            Statement stm1 = con1.createStatement();
            ResultSet rs1;
            String sql="Select * from empresa where usuario='"+usuario+"';";
            rs1 = stm1.executeQuery(sql);
            while(rs1.next()){
                if(rs1.getString(5).equals(pass)){
                    return 2; //es un empresa valida
                }else{
                    return 0; //la contraseña no coincide
                }
            }
            return 0; // el usuario no existe
            
        } catch (SQLException ex) {
            return 0; // el usuario no existe
        }
        
    }
 
public String getGiroEmpresas(){
     Conection c=new Conection();
     Connection con1;
     String ret="";
        try {
            con1 = c.getConnection();
            Statement stm1 = con1.createStatement();
            ResultSet rs1;
            String sql="Select * from giro_empresa;";
            rs1 = stm1.executeQuery(sql);
            while(rs1.next()){
                ret+="<option value="+ rs1.getInt(1)+" >"+ rs1.getString(2)+"</option>";
            }
            con1.close();
            return ret;
        } catch (SQLException ex) {
            return ret;
        }
}
 
 public Empresa getEmpresa(String usuario){
     Empresa e=new Empresa();
        Conection c=new Conection();
        Connection con1;
        try {
            con1 = c.getConnection();
            Statement stm1 = con1.createStatement();
            ResultSet rs1;
            String sql="Select * from empresa where usuario='"+usuario+"';";
            rs1 = stm1.executeQuery(sql);
            rs1.next();
            e.setGiro(rs1.getInt(2));
            e.setId(rs1.getInt(1));
            e.setNombre(rs1.getString(3));
            e.setUser(rs1.getString(4));
            e.setPass1(rs1.getString(5));
            e.setUrl(rs1.getString(6));
            e.setMail(rs1.getString(7));
            e.setTelefono(rs1.getString(8));
            return e;
        } catch (SQLException ex) {
            return e; // el usuario no existe
        }
        
 }
 
 
 
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
    
    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getPass1() {
        return pass1;
    }

    public void setPass1(String pass1) {
        this.pass1 = pass1;
    }


    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getMail() {
        return mail;
    }

    public void setMail(String mail) {
        this.mail = mail;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public int getGiro() {
        return giro;
    }

    public void setGiro(int giro) {
        this.giro = giro;
    }
 
}
